home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / t_os / fapx / fapxmain.plt < prev    next >
Text File  |  1991-10-18  |  27KB  |  1,061 lines

  1. /************************************************************************
  2. *                                    *
  3. * nifty Full Auto Pilot eXtended V4    *
  4. *                                    *
  5. *    All Right Reserved, Copyright(c) Yama-chan(NIFTY-PEE01244) 1991    *
  6. *                                 (Hiroaki Yamada)            *
  7. *    All Right Reserved, Copyright(c) 北狐(NIFTY-NAH02127) 1991    *
  8. *                                 (Yuse Okabe)            *
  9. *    All Right Reserved, Copyright(c) モップ(NIFTY-PFF00570) 1991    *
  10. *                                 (Masahiro Kezuka)            *
  11. *    All Right Reserved, Copyright(c) るぱん(NIFTY-MHB01736) 1991    *
  12. *                                 (Kunio Yamaguchi)            *
  13. *                                    *
  14. *    v2.02    1991.01.05    original made        by 北狐        *
  15. *    v2.改    1991.02.02    MREADコマンド対応他    by Yama-chan    *
  16. *    v3.00    1991.02.23    MOPTERM v0.98対応他            *
  17. *                バイナリメール受信処理追加            *
  18. *                HP未読処理追加                *
  19. *                オートアップ処理追加(Forum,Mail,HP)        *
  20. *    v3.10a    1991.03.10    Forum処理変更(Forum名エラー時のストップ回避)    *
  21. *                HP処理変更(IDエラー時のストップ回避)        *
  22. *                MEMOからのオートアップ処理追加        *
  23. *                オートアップ制御ファイル指定処理追加        *
  24. *                ダウンロードファイル指定方法変更        *
  25. *                ウェイト時間指定方法変更            *
  26. *    v3.10b    1991.03.17    メール受信処理変更(受信中のメール着信対応)    *
  27. *                バイナリメールのオートアップ処理追加        *
  28. *    v3.10c    1991.03.20    同報メール送信処理追加            *
  29. *    v3.10d    1991.03.27    X制御有効に変更(アップロード時画面乱れ回避)    *
  30. *    v3.20a    1991.03.28    ログファイルのフォーラム及びHP毎作成モード追加    *
  31. *                Forumアップのタイトル実行時指定処理のバグ修正    *
  32. *    v3.20b    1991.03.30    バイナリ同報メール送信処理追加        *
  33. *    v3.30a    1991.04.06    オートアップ制御ファイル作成処理追加        *
  34. *    v3.30b    1991.04.07    NOWFILE実行時のバグ修正            *
  35. *    v3.30c    1991.04.13    オートログイン実行時のバグ修正        *
  36. *    v3.40a    1991.05.10    「動作中」表示追加            *
  37. *                音声ガイダンス処理追加            *
  38. *                ログファイルの削除を次回起動時に変更        *
  39. *                gonifty時モード設定コマンド発行処理追加    *
  40. *    v3.40b    1991.06.02    ダータライブラリからの自動ダウンロード処理追加    *
  41. *    v3.40c    1991.06.22    nifty割引料金時間帯実行機能追加        *
  42. *    v3.40d    1991.06.25    バイナリメールダウンロード処理のバグ修正        *
  43. *    v3.50a    1991.06.28    ROAD2混雑時リトライ処理追加            *
  44. *                mread終了判定最大待ち時間無制限に変更    *
  45. *    v3.50b    1991.06.30    GOFMNEWS処理変更            *
  46. *    v3.50c    1991.07.03    エグゼクティブオプション対応(メール最大50通対応)    *
  47. *                日付指定メール自動アップロード処理追加        *
  48. *                データライブラリからのダウンロード処理バグ修正    *
  49. *    v3.60a    1991.07.07    データライブラリ一覧表示機能追加        *
  50. *    v3.60b  1991.07.08    自動アップロード文中{\n}送信バグ修正    *
  51. *    v3.60c    1991.07.10    オートダイヤル時エラー処理強化            *
  52. *    v3.60d    1991.08.03    エラー処理強化                *
  53. *    v4.00a    1991.08.15    対話型セットアップ機能を始めとする大幅変更    *
  54. *    v4.00b    1991.08.17    バグ修正     FTOWNS1へのアップ版    *
  55. *    v4.00c    1991.08.17    バグ修正                 *
  56. *    v4.00d    1991.08.21    バグ修正及びモデム機種追加        *
  57. *    v4.01a    1991.08.31    ログ圧縮保存時バグ修正            *
  58. *                ログ参照機能追加                *
  59. *    v4.01b    1991.09.01    HPログファイル保存方法変更 FTOWNS1へのアップ版    *
  60. *    v4.01c    1991.09.05    ダウンロード時テンポラリファイル作成しないよう変更    *
  61. *                            (非圧縮モードのみ)*
  62. *                nifty処理実行日に偶数/奇数日指定追加    *
  63. *                プロフィール参照機能追加            *
  64. *                ログ参照機能に削除修正機能を追加        *
  65. *    v4.01d    1991.09.08    バグ修正                 *
  66. *                                    *
  67. *************************************************************************/
  68.  
  69. /*    FAPXのV/L    */
  70. %VerLev    {4.01d};
  71.  
  72. /************************************************************************
  73. *    定数・変数領域の指定                        *
  74. *************************************************************************/
  75.  
  76. /*    ID & PASSWORD    */
  77. var     ID        [8];
  78. var     PassWord    [8];
  79.  
  80. /*    電話番号        */
  81. var     ROAD1        [20];
  82. var     ROAD2        [20];
  83.  
  84. /*    モデムコマンド及び通信速度    */
  85. var     MODEM        [40];
  86. var     DIAL        [1];
  87.  
  88. /*    ディレクトリ    */
  89. var     TEMP        [64];
  90. var     LOG        [64];
  91. var     SOUND        [64];
  92. var     TEMP2        [64];
  93. var     LOG2        [64];
  94. var     SOUND2        [64];
  95.  
  96. /*    ログファイル作成モード    */
  97. var     LOGmode        [8];
  98.  
  99. /*    NIFTYにおける処理    */
  100. var     NIFTY        [2048];
  101.  
  102. /*    画面背景色    */
  103. var     R        [3];
  104. var     G        [3];
  105. var     B        [3];
  106.  
  107. /*    オプションスイッチ    */
  108. var     BELFIL        [64];
  109. var     VBELL        [3];
  110. var     NATTOU        [3];
  111. var     CLICK        [3];
  112. var     TAB        [2];
  113. var     LOCK        [3];
  114.  
  115. /*    保存ファイルの圧縮指定    */
  116. var     COMPRESS    [3];
  117. var     ARCHIVER    [64];
  118.  
  119. /*    設定ファイルのパス名    */
  120. var    SETFILE        [64];
  121. var    NIFFILE        [64];
  122.  
  123. /*    変数の定義    */
  124. var    BMcnt    [2];    /* 未読バイナリメール数            */
  125. var    BMAILNO    [2];    /* 未読バイナリメール番号        */
  126. var    line    [3];    /* アップロード制御ファイル行カウンタ    */
  127. var    linebuf    [258];    /* アップロード制御文バッファ        */
  128. var    upldcntl[64];    /* 自動アップロード制御ファイル名    */
  129. var    dnldcntl[64];    /* 自動ダウンロード制御ファイル名    */
  130. var    liblist    [40];    /* ライブラリ番号リスト            */
  131.  
  132. /*    ウェイト時間の設定    */
  133. %Wtime1        10;            /* モデム応答待ち時間        */
  134. %Wtime2        60;            /* NIFTYプロンプト待ち時間    */
  135. %Wtime4        60;            /* select入力待ち時間        */
  136.  
  137. /*    ベルコード    */
  138. %BELL    @xc({07});
  139.  
  140. /************************************************************************
  141. *    共通処理モジュール                        *
  142. ************************************************************************/
  143.  
  144. /* 音声メッセージ出力処理 */
  145. %SNDMSG    {
  146.     [file]
  147.     case    (
  148.         SOUND2={}||SOUND2={\},
  149.         {No},{case(@filechk(SOUND2|file),
  150.             {Yes},{snd(SOUND2|file)},
  151.             {No}, {display(BELL)})},
  152.         {Yes},{display(BELL)}
  153.         );
  154.     };
  155.  
  156. /*異常を検出した場合の処理*/
  157. %Abort    { 
  158.     [CommentA]
  159.     SNDMSG({okasi_f.snd});
  160.     display(CommentA);
  161.     display({\n正常に処理できなかったので終了します\n});
  162.     discon;
  163.     stop;
  164.     };
  165.  
  166. %ModemOff
  167.     {
  168.     wait(2,{type({+++})});
  169.     wait    (
  170.         Wtime1,
  171.         {Abort({\nコマンド・モードに切り替わらないよぉ~\n})},
  172.         {OK},{wait(2,{type({ATH0\n})})}
  173.         );
  174.     };
  175.  
  176. /*異常切断処理*/
  177. %AbortOff
  178.     {
  179.     [CommentB]
  180.     display(CommentB);
  181.     SNDMSG({okasi_f.snd});
  182.     display({\nうんがぁ~、モデムを直接切断します\n});
  183.     ModemOff;
  184.     wait(3);
  185.     discon;
  186.     stop;
  187.     };
  188.  
  189. /*切断処理 及び 切断終了表示処理*/
  190. %LogOff    {
  191.     display({\n切断処理を開始しました\n\n});
  192.     type({BYE\n});
  193.     wait    (
  194.         Wtime2,
  195.         {AbortOff({\nありゃ、ホストが受け付けてくれないよぉ\n})},
  196.         {\n01+},{ModemOff},
  197.         {HOST NAME?\n*},{type({OFF\n})}
  198.         );
  199.     wait(3);
  200.     discon;
  201.     };
  202.  
  203. %PLTSTOP{
  204.     SNDMSG({owata_f.snd});
  205.     display({\nオートパイロットFAPX}|VerLev|{を停止しました\n});
  206.     stop;
  207.     };
  208.  
  209. %AUTOEND{
  210.     footnote({オートパイロットの終了処理をしています});
  211.     dispoff({Yes});
  212.     case    (COMPRESS={Yes}&&ARCHIVER<>{},
  213.         {Yes},
  214.         {
  215.         %file    @nowfile(TEMP2|{_mopterm.eml},TEMP);
  216.         dispoff({Yes});
  217.         command(ARCHIVER|{ a }|LOG2|{Nifmail.lzh }|TEMP2|file);
  218.         command({del }|TEMP2|file);
  219.         %file    @nowfile(TEMP2|{_mopterm.bml},TEMP);
  220.         dispoff({Yes});
  221.         command(ARCHIVER|{ a }|LOG2|{Nifbmail.lzh }|TEMP2|file);
  222.         command({del }|TEMP2|file);
  223.         },
  224.         {
  225.         renfile(TEMP2|{_mopterm.eml},LOG2|{Nifmail});
  226.         renfile(TEMP2|{_mopterm.bml},LOG2|{Nifbmail});
  227.         }
  228.         );
  229.     dispoff({No});
  230.     display({\nNIFTYとの通信を終了しました\n});
  231.     SNDMSG({owata_f.snd});
  232.     wait(2);
  233.     };
  234.  
  235. %WAITABORT
  236.     {
  237.     [sec]
  238.     wait    (
  239.         sec,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
  240.         {\n>},,
  241.         {\nmore>},,
  242.         {\nFORUM>},,
  243.         {\nCCS(N)>},,
  244.         {\nLIB>},,
  245.         {\nHP>},,
  246.         {\nMAIL>},,
  247.         );
  248.     };
  249.  
  250. %WAITCHAR
  251.     {
  252.     [sec,Waitchr,WaitcmdC]
  253.     wait    (
  254.         sec,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
  255.         Waitchr,WaitcmdC
  256.         )
  257.     };
  258.  
  259. /* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
  260. %setcdir2
  261.     {
  262.     [dir]
  263.     %dir2    @case(@nochar(dir),2,{im(dir|{\})},,{im(dir)});
  264.     setcdir(dir2)
  265.     };
  266.  
  267. /* 指定されたディレクトリー配下に,第2パラメターで指定されたディレクトリを
  268.      (もし,無ければ)作成する。 */
  269. %mkdir    {
  270.     [dir,name]
  271.     dispoff({Yes});
  272.     case    (@setcdir2(dir),
  273.         {Yes},{command({mkdir } | name )},
  274.         {No}, {select({装置(} | dir | {)が使えませんが?},99999,{},
  275.             {  もう一回やってみる },{mkdir(dir,name)},
  276.             {  自動処理をやめる },{stop},
  277.             {  無視して先の処理をやる },{});
  278.               }
  279.         );
  280.     dispoff({No})
  281.     };
  282.  
  283. /* 指定されたディレクトリーを(もし,無ければ)作成する。 */
  284. %mkdir2    {
  285.     [dir]
  286.     case    (@setcdir2(dir),
  287.         {Yes},,
  288.         {No},{mkdir2(@body(dir,,{\}));
  289.             mkdir(@body(dir,,{\}),@tail(dir,{\}));}
  290.         );
  291.     };
  292.  
  293. /*    n番目の部分文字列をとりだす関数    */
  294. %nth    {
  295.     [str,n,sep]    /* 元の文字列,順番,区切り文字列 */
  296.     var    a    [256];
  297.     var    m    [3];
  298.     a:=str;
  299.     m:=0;
  300.     case    (n<1,
  301.         {Yes},{im({})},
  302.         {No},
  303.         {loop    (
  304.             {
  305.             m:=m+1;
  306.             case    (m==n||a={},{Yes},{im({No})},
  307.                 ,{a:=@body(a,sep);im({Yes})}
  308.                 );
  309.             }
  310.             );
  311.          im(@head(a,sep));
  312.         }
  313.         );
  314.     };
  315.  
  316. /*    現在の日付・時刻を得る 「yyyy-mm-dd (曜) hh:mm:ss」    */
  317. %getdt    {
  318.     var     dt    [15];
  319.     var    dt2    [15];
  320.     var    tm    [8];
  321.     dispoff({Yes});
  322.     command({del }|TEMP2|{_moptemp.tmp});
  323.     write(TEMP2|{_moptemp.tmp},{\n});
  324.     loop    (
  325.         {
  326.         command({date >}|TEMP2|{_moptime.tmp <}|TEMP2|{_moptemp.tmp});
  327.         dt:=    @getchar(@read(TEMP2|{_moptime.tmp},1,1),14,15);
  328.         command({time >}|TEMP2|{_moptime.tmp <}|TEMP2|{_moptemp.tmp});
  329.         tm:=    @getchar(@read(TEMP2|{_moptime.tmp},1,1),14,8);
  330.         case(@getchar(tm,1,1)={ },{Yes},{tm:={0}|@getchar(tm,2,7)});
  331.         command({date >}|TEMP2|{_moptime.tmp <}|TEMP2|{_moptemp.tmp});
  332.         dt2:=    @getchar(@read(TEMP2|{_moptime.tmp},1,1),14,15);
  333.         case    (dt=dt2,{Yes},{im({No})},{No},{im({Yes})});
  334.         }
  335.         );
  336.     dispoff({No});
  337.     im(dt|{ }|tm);
  338.     };
  339.  
  340. /*    指定されたファイルを yymmddnn.* にリネームして指定されたディレクトリにコピーする */
  341. %renfile
  342.     {
  343.     [file,path]
  344.     var    n    [2];
  345.     var    file2    [12];
  346.     %d    @getdt;
  347.     %date    @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
  348.     n:=-1;
  349.     mkdir2(path);
  350.     setcdir2(path);
  351.     loop    (
  352.         {
  353.         n:=n+1;
  354.         case    (@nochar(n)=1,{Yes},{n:={0}|n});
  355.         case    (@body(file,{.})={},
  356.             {Yes},{file2:=date|n},
  357.             {No}, {file2:=date|n|{.}|@tail(file,{.})});
  358.         case    (@filechk(file2)={No}||n==99,
  359.             {Yes},{im({No})},
  360.             {No}, {im({Yes})});
  361.         }
  362.         );
  363.     dispoff({Yes});
  364.     command({copy }|file|{ }|file2);
  365.     dispoff({No});
  366.     im(file2);    /* リネーム後のファイル名を返す */
  367.     };
  368.  
  369. /*    指定されたファイルを mmddhhmm.* にリネームして指定されたディレクトリにコピーする */
  370. %nowfile
  371.     {
  372.     [file,path]
  373.     var    file2    [12];
  374.     %d    @getdt;
  375.     %date    @getchar(d,6,2)|@getchar(d,9,2)|
  376.         @getchar(d,17,2)|@getchar(d,20,2);
  377.     case    (@body(file,{.})={},
  378.         {Yes},{file2:=date},
  379.         {No}, {file2:=date|{.}|@body(file,{.})});
  380.     mkdir2(path);
  381.     setcdir2(path);
  382.     dispoff({Yes});
  383.     command({copy }|file|{ }|file2);
  384.     dispoff({No});
  385.     im(file2);    /* リネーム後のファイル名を返す */
  386.     };
  387.  
  388. /*    指定されたディレクトリに yymmddnn.* というファイルを作成する */
  389. %crefile
  390.     {
  391.     [path,ex]
  392.     var    n    [2];
  393.     var    file1    [12];
  394.     %d    @getdt;
  395.     %date    @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
  396.     n:=-1;
  397.     mkdir2(path);
  398.     setcdir2(path);
  399.     loop    (
  400.         {
  401.         n:=n+1;
  402.         case    (@nochar(n)=1,{Yes},{n:={0}|n});
  403.         case    (ex={},
  404.             {Yes},{file1:=date|n},
  405.             {No}, {file1:=date|n|{.}|ex});
  406.         case    (@filechk(file1)={No}||n==99,
  407.             {Yes},{im({No})},
  408.             {No}, {im({Yes})});
  409.         }
  410.         );
  411.     im(file1);    /* リネーム後のファイル名を返す */
  412.     };
  413.  
  414. /*    初期設定    */
  415. %init    {
  416.     setoak({J});
  417.     case(NATTOU={Yes}||NATTOU={No},{Yes},{nattou(NATTOU)});
  418.     case(CLICK={Yes}||CLICK={No},{Yes},{click(CLICK)});
  419.     case(LOCK={Yes}||LOCK={No},{Yes},{shiftl(LOCK)});
  420.     case(R<>{}&&G<>{}&&B<>{},{Yes},{backclr(R,G,B)});
  421.     case(VBELL={Yes}||VBELL={No},{Yes},{visibell(VBELL)});
  422.     case    (@tail(BELFIL,{.}),
  423.         {snd},{bellfile(BELFIL)},
  424.         {SND},{bellfile(BELFIL)});
  425.     case(TAB<>{},{Yes},{tab(TAB)});
  426.  
  427.     case    (TEMP={},{Yes},{TEMP:=CDIR});
  428.     case    (@nochar(TEMP)==3,
  429.         {No}, {TEMP2:=TEMP|{\}},
  430.         {Yes},{TEMP2:=TEMP});
  431.     case    (TEMP<>{}&&@setcdir2(TEMP)={No},{Yes},{mkdir2(TEMP)});
  432.  
  433.     case    (LOG={},{Yes},{LOG:=CDIR});
  434.     case    (@nochar(LOG)==3,
  435.         {No}, {LOG2:=LOG|{\}},
  436.         {Yes},{LOG2:=LOG});
  437.     case    (LOG<>{}&&@setcdir2(LOG)={No},{Yes},{mkdir2(LOG)});
  438.  
  439.     case    (@nochar(SOUND)==3,
  440.         {No}, {SOUND2:=SOUND|{\}},
  441.         {Yes},{SOUND2:=SOUND});
  442.  
  443.     };
  444.  
  445. /*    skip top message    */
  446. %TOPMENU{
  447.     wait    (
  448.         Wtime2,    {AbortOff({\nホストの反応が鈍いよぉ~\n})},
  449.         {NIFTY-Serve     TOP},    {WAITABORT(Wtime2)},
  450.         {CUG トップ},        {WAITABORT(Wtime2)},    /* CUG */
  451.         {\n>},{type({\n});TOPMENU}
  452.         );
  453.     };
  454.  
  455. /*    niftyへ行く    */
  456. %GONIF    {
  457.     WAITABORT(Wtime2);
  458.     type({GO NIF\n});
  459.     WAITABORT(Wtime2);
  460.     type({1\n});
  461.     TOPMENU;
  462.     };
  463.  
  464. /*    フォーラムのトップメニューへ行く    */
  465. %FORUMTOP
  466.     {
  467.     wait    (
  468.         Wtime2,    {AbortOff({\nホストの反応が鈍いよぉ~\n})},
  469.         {◆番号又はコマンドを入力して下さい◆\n>},
  470.             {SNDMSG({okasi_f.snd});
  471.              display({フォーラム名が違っていませんか?\n});
  472.              im({forumERROR});},
  473.         {2.一時利用 3.入会手続き\n>},
  474.             {SNDMSG({okasi_f.snd});
  475.              display({入会していないフォーラムです\n});
  476.              im({forumERROR});},
  477.         {現在、サービスは大変混雑しています。},
  478.             {WAITABORT(Wtime2);
  479.              SNDMSG({okasi_f.snd});
  480.              display({混雑しているため次の処理に移ります\n});
  481.              im({forumERROR});},
  482.         {続き (改行で表示 E:終了)\n>},
  483.             {type({\n});FORUMTOP;},
  484.         {\nmore>},
  485.             {type({\n});FORUMTOP;},
  486.         {8:オプション  E:終了\n>},
  487.             {type({SET MENU ON\n});
  488.              WAITABORT(Wtime2);
  489.              type({SET PAGE OFF\n});
  490.              WAITABORT(Wtime2);
  491.              type({SEND OFF\n});
  492.              WAITABORT(Wtime2);
  493.              im({OK});},
  494.         {\nFORUM>},
  495.             {type({SET MENU ON\n});
  496.              WAITABORT(Wtime2);
  497.              type({SET PAGE OFF\n});
  498.              WAITABORT(Wtime2);
  499.              type({SEND OFF\n});
  500.              WAITABORT(Wtime2);
  501.              im({OK});}
  502.         )
  503.     };
  504.  
  505. /************************************************************************
  506. *    ダウンロード開始と終了の処理                    *
  507. *************************************************************************/
  508. /*    LOG DOWN START        */
  509. %DOWNSTART
  510.     {
  511.     case    (
  512.         LOGmode={forum}||LOGmode={mes},
  513.         {Yes},,
  514.         {No},
  515.         {
  516.         display({\nダウンロードを開始します\n});
  517.         receive(TEMP2|{_mopterm.log});
  518.         }
  519.         )
  520.     };
  521.  
  522. /*    LOG DOWN STOP        */
  523. %DOWNSTOP
  524.     {
  525.     case    (
  526.         LOGmode={forum}||LOGmode={mes},
  527.         {Yes},,
  528.         {No},
  529.         {
  530.         stoprec;
  531.         case    (COMPRESS={Yes}&&ARCHIVER<>{},
  532.             {Yes},
  533.             {
  534.             dispoff({Yes});
  535.             %file    @nowfile(TEMP2|{_mopterm.log},TEMP);
  536.             dispoff({Yes});
  537.             command(ARCHIVER|{ a }|LOG2|{Niftylog.lzh }|
  538.                                 TEMP2|file);
  539.             command({del }|TEMP2|file);
  540.             dispoff({No});
  541.             },
  542.             ,
  543.             {
  544.             mkdir2(LOG2|{Niftylog});
  545.             renfile(TEMP2|{_mopterm.log},LOG2|{Niftylog});
  546.             }
  547.             );
  548.         display({\nダウンロードを終了しました\n});
  549.         setcdir(CDIR);
  550.         }
  551.         )
  552.     };
  553.  
  554. /*    フォーラム毎にダウンロードファイルを作成する処理    */
  555. %LOGforum
  556.     {
  557.     [fname,mode]
  558.     case    (
  559.         mode,
  560.         {start},
  561.         {
  562.         display({\n}|@tail(fname,{\})|{のダウンロードを開始します\n});
  563.         case    (COMPRESS={Yes}&&@filechk(ARCHIVER)={Yes},
  564.             {Yes},
  565.             {
  566.             mkdir2(@body(TEMP2|fname,,{\}));
  567.             dispoff({Yes});
  568.             command({del }|TEMP2|fname|{.log});
  569.             dispoff({No});
  570.             receive(TEMP2|fname|{.log});
  571.             },
  572.             {No},
  573.             {receive(LOG2|fname|{\}|@crefile(LOG2|fname,{log}))},
  574.             );
  575.         },
  576.         {stop},
  577.         {
  578.         stoprec;
  579.         display({\n}|@tail(fname,{\})|{のダウンロードを終了しました\n});
  580.         case    (COMPRESS={Yes}&&@filechk(ARCHIVER)={Yes},
  581.             {Yes},
  582.             {
  583.             mkdir2(@body(LOG2|fname,,{\}));
  584.             dispoff({Yes});
  585.             setcdir(TEMP);
  586.             %file    @nowfile(TEMP2|fname|{.log},TEMP);
  587.             dispoff({Yes});
  588.             command(ARCHIVER|{ a }|LOG2|fname|{.lzh }|TEMP2|file);
  589.             command({del }|TEMP2|file);
  590.             dispoff({No});
  591.             }
  592.             );
  593.         setcdir(CDIR);
  594.         }
  595.         );
  596.     };
  597.  
  598. /************************************************************************
  599. *    フォーラム処理の定義                        *
  600. *    Forum({フォーラム名},{会議室番号リスト},{ライブラリ番号リスト})        *
  601. *        フォーラム名で指定されたフォーラムの                *
  602. *        会議室番号リストで指定された会議室の未読を読み        *
  603. *        ライブラリ番号リストが指定されていればデータライブラリをちらっと見る    *
  604. *************************************************************************/
  605.  
  606. /*    down forum from boad number        */
  607. %Forum    {
  608.     [fname,boadlist,lib]
  609.     footnote(fname|{をダウンロードしています});
  610.     case    (LOGmode={forum},{Yes},{LOGforum(fname,{start})});
  611.     type({GO }|fname|{\n});
  612.     case    (@FORUMTOP={OK},
  613.         {Yes},
  614.         {
  615.         MESREAD(boadlist);
  616.         case(lib<>{},{Yes},{DATALIB(lib)});
  617.         }
  618.         );
  619.     case    (LOGmode={forum},{Yes},{LOGforum(fname,{stop})});
  620.     };
  621.  
  622. /*    指定された会議室の未読を全部読む    */
  623. %MESREAD{
  624.     [boadlist]
  625.     case    (boadlist<>{},
  626.         {Yes},
  627.         {
  628.         type({MES\n});
  629.         WAITABORT(Wtime2);
  630.         type({MREAD ROOM:}|boadlist|{\n});
  631.         type({\n});    /* 「次頁は・・・」を出力させるため */
  632.         wait(,,{◆次頁はありません◆\n>});
  633.         }
  634.         );
  635.     };
  636.  
  637. /*    データライブラリをちらっと見る処理    */
  638. %DATALIB{
  639.     [lib]
  640.     case    (lib={LIB}||lib={lib},
  641.         {No}, {LIBLIST(lib);},
  642.         {Yes},{type({LIB\n});WAITABORT(Wtime2);}
  643.         );
  644.     };      
  645.  
  646. /*    ライブラリーの最新登録状況を見る処理    */
  647. %LIBLIST{
  648.     [lib]
  649.     display({LIBの最新登録状況を見ます\n});
  650.     liblist:=lib;
  651.     type({SET PAGE ON\n});
  652.     WAITABORT(Wtime2);
  653.     loop    (
  654.         {
  655.         case    (@head(liblist,{,}),
  656.             {},{im({No})},
  657.             ,
  658.             {
  659.             type({LIB }|@head(liblist,{,})|{\n});
  660.             wait    (
  661.                 Wtime2,
  662.                 {AbortOff({\nホストの反応が鈍いよぉ~\n})},
  663.                 {ダウンロード  E:終了)\n>},
  664.                 {
  665.                 type({DIR\n});
  666.                 WAITABORT(Wtime2);
  667.                 liblist:=@body(liblist,{,});
  668.                 im({Yes});
  669.                 },
  670.                 {\n>},        /* n番ライブラリなしの場合 */
  671.                 {liblist:=@body(liblist,{,});im({Yes})}
  672.                 );
  673.             }
  674.             );
  675.         }
  676.         );
  677.     };
  678.  
  679. /************************************************************************
  680. *    FMNEWSをちょっと見る処理                    *
  681. *************************************************************************/
  682. %GOFMNEWS
  683.     {
  684.     footnote({FMNEWSをちょっと覗いています});
  685.     display({FMNEWSをちょっと覗いてみます\n});
  686.     type({GO FMINFO\n});
  687.     WAITABORT(Wtime2);
  688.     type({1\n});
  689.     case    (LOGmode={forum}||LOGmode={mes},
  690.         {Yes},{LOGforum({FMNEWS},{start})}
  691.         );
  692.     WAITABORT(Wtime2);
  693.     case    (LOGmode={forum}||LOGmode={mes},
  694.         {Yes},{LOGforum({FMNEWS},{stop})}
  695.         );
  696.     };
  697.  
  698. /************************************************************************
  699. *    課金情報を見る処理                        *
  700. *************************************************************************/
  701. %GOBILL    {
  702.     footnote({課金情報を確認しています});
  703.     display({あなたの課金情報を見ます\n});
  704.     type({GO BILL\n});
  705.     wait    (
  706.         Wtime2,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
  707.         {ご利用料金一覧  3:説明  E:終了)\n>},{type({1\n})},
  708.         );
  709.     case    (LOGmode={forum}||LOGmode={mes},
  710.         {Yes},{LOGforum({BILL},{start})}
  711.         );
  712.     WAITABORT(Wtime2);
  713.     case    (LOGmode={forum}||LOGmode={mes},
  714.         {Yes},{LOGforum({BILL},{stop})}
  715.         );
  716.     };
  717. /************************************************************************
  718. *    ホームパーティの未読を読む処理の定義                *
  719. *        hphostid    HPの設置者のID                *
  720. *        hppasswd    HPのパスワード    {*}の場合は実行時に入力    *
  721. *************************************************************************/
  722. %GOHP    { 
  723.     [hphostid,hppasswd]
  724.     footnote(hphostid|{のHPダウンロード処理中});
  725.  
  726.     %readall{            /* down all message */
  727.         wait    (,,
  728.             {続き(改行のみ:次頁)\n>},
  729.             {type({\n});readall;},
  730.             {\nHP>},
  731.             );
  732.         };
  733.  
  734.     display(hphostid|{のホームパーティの未読を読みます\n});
  735.     type({GO HP\n});
  736.     WAITCHAR(Wtime2,{2. Home Partyの説明\n>},{type({1\n})});
  737.     WAITCHAR(Wtime2,{:自分のHP)\n:},{type(hphostid|{\n})});
  738.     wait    (
  739.         Wtime2,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
  740.         {◆該当する利用者のHome Partyはありません◆\n},
  741.         {WAITCHAR(Wtime2,{2. Home Partyの説明\n>},
  742.             {SNDMSG({okasi_f.snd});
  743.              display({ホームパーティのIDが違っています\n});
  744.             })
  745.         },
  746.         {設置しますか?(y/n)\n:},
  747.         {
  748.         SNDMSG({okasi_f.snd});
  749.         display({ホームパーティのIDが違っています\n});
  750.         type({N\n});WAITABORT(Wtime2);
  751.         },
  752.         {パスワード\n:},
  753.         {
  754.         loop    (
  755.             {
  756.             type(hppasswd|{\n});
  757.             wait    (
  758.                 Wtime2,
  759.                 {AbortOff({\nホストの反応が鈍いよぉ~\n})},
  760.                 {\nHP>},
  761.                 {
  762.                 case    (LOGmode={forum}||LOGmode={mes},
  763.                     {Yes},
  764.                     {LOGforum({HP\}|hphostid,{start})}
  765.                     );
  766.                 type({READ NEW\n});
  767.                 readall;
  768.                 case    (LOGmode={forum}||LOGmode={mes},
  769.                     {Yes},
  770.                     {LOGforum({HP\}|hphostid,{stop})}
  771.                     );
  772.                 im({No});
  773.                 },
  774.                 {パスワード\n:},{im({Yes})},
  775.                 {2. Home Partyの説明\n>},
  776.                 {
  777.                 SNDMSG({okasi_f.snd});
  778.                 display(hphostid|{のパスワードが違います\n});
  779.                 im({No})}
  780.                 );
  781.             }
  782.             );
  783.         }
  784.         );
  785.     };
  786.  
  787. /************************************************************************
  788. *    チャット等の自由行動の処理の定義の定義                *
  789. *************************************************************************/
  790. %GOCHAT    {
  791.     %retFAPX{
  792.         footnote({自由行動の終了処理中です});
  793.         chat({No});
  794.         case    (LOGmode={forum}||LOGmode={mes},
  795.             {Yes},{LOGforum({自由行動},{stop})}
  796.             );
  797.         dispoff({Yes});
  798.         type({/TT\n});
  799.         loop    (
  800.             {
  801.             wait    (
  802.                 Wtime2,
  803.                 {AbortOff({\nホストの反応が鈍いよぉ~\n})},
  804.                 {◆番号又はコマンドを入力して下さい◆},
  805.                 {WAITABORT(Wtime2);type({TT\n});im({Yes})},
  806.                 {◆正しいコマンドを入力して下さい◆},
  807.                 {WAITABORT(Wtime2);type({TT\n});im({Yes})},
  808.                 {◆入力データエラー◆\nHP>},
  809.                 {type({TT\n});im({Yes})},
  810.                 {(改行のみ終了)\n:},
  811.                 {type({\n});WAITABORT(Wtime2);
  812.                         type({TT\n});im({Yes})},
  813.                 {\n>},
  814.                 {type({\n});im({Yes})},
  815.                 {NIFTY-Serve     TOP},
  816.                 {WAITABORT(Wtime2);im({No})},
  817.                 {CUG トップ},{GONIF;im({No})}    /* CUG */
  818.                 );
  819.             }
  820.             );
  821.         type({SET MENU ON\n});    WAITABORT(Wtime2);
  822.         type({SET PAGE OFF\n});    WAITABORT(Wtime2);
  823.         type({SET FF OFF\n});    WAITABORT(Wtime2);
  824.         dispoff({No});
  825.         };
  826.  
  827.     dispoff({Yes});
  828.     type({SET PAGE ON\n});    WAITABORT(Wtime2);
  829.     dispoff({No});
  830.     display({これから自由行動に入ります\n});
  831.     display({自由行動を終了する時はPF12を押して下さい\n});
  832.     footnote({自由行動中です 自由行動を終了する時は PF12 を押して下さい});
  833.     case    (LOGmode={forum}||LOGmode={mes},
  834.         {Yes},{LOGforum({自由行動},{start})}
  835.         );
  836.     chat({Yes});
  837.     loop    (
  838.         {
  839.         waitx(300);
  840.         case    (@xtype,
  841.             {-2},{SNDMSG({jikan_f.snd});im({Yes});},
  842.             {112},
  843.             {
  844.             SNDMSG({erande_f.snd});
  845.             select    ({処理を選択して下さい},
  846.                 Wtime4,{retFAPX;im({No})},
  847.                 {          自動通信に復帰する          },
  848.                 {retFAPX;im({No})},
  849.                 {          自由行動を継続する          },
  850.                 {im({Yes})}
  851.                 );
  852.             }
  853.             );
  854.         }
  855.         );
  856.     };
  857.  
  858. /************************************************************************/
  859. /*    別のIDでNIFTYにログインする                */
  860. /************************************************************************/
  861. %RECONECT
  862.     {
  863.     [newid,newpswd]
  864.     footnote(newid|{で再ログイン処理中です});
  865.     display(newid|{でログインし直します\n});
  866.     type({LOG\n});
  867.     wait    (
  868.         Wtime2,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
  869.         {Enter User-ID  --->},
  870.         {type(newid|{\n})},
  871.         );
  872.     wait    (
  873.         Wtime2,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
  874.         {Enter Password --->},
  875.         {
  876.         case    (
  877.             newpswd={*}||newpswd={},
  878.             {Yes},
  879.             {
  880.             SNDMSG({nyuryo.snd});
  881.             type(@input({パスワードを入力してください})|{\n});
  882.             },
  883.             {No},
  884.             {type(newpswd|{\n})}
  885.             );
  886.         wait    (
  887.             Wtime2,
  888.             {AbortOff({\nホストの反応が鈍いよぉ~\n})},
  889.             {\n Password ERROR},
  890.             {AbortOff(
  891.                 {\nパス・ワードがおかしいですよ?\n})},
  892.             {NIFTY-Serve     TOP},
  893.             {WAITABORT(Wtime2)},
  894.             {CUG トップ},GONIF,        /* CUG */
  895.             {\n>},{type({\n});TOPMENU}
  896.             );
  897.         },
  898.         {\n User-ID Error},{AbortOff({\nID間違ってない?\n})}
  899.         );
  900.     type({SET MENU ON\n});    WAITABORT(Wtime2);
  901.     type({SET FF OFF\n});    WAITABORT(Wtime2);
  902.     type({SET PAGE OFF\n});    WAITABORT(Wtime2);
  903.     setcdir(CDIR);
  904.     #FAPXMAIL.PLP;    /* メール受信処理 */
  905. };
  906.  
  907. /************************************************************************/
  908. /*    自動通信処理                            */
  909. /************************************************************************/
  910.  
  911. %DOnifty{
  912.     var    DATE    [24];
  913.     var    n    [3];
  914.     %nifty1    {
  915.         case    (@nth(a,1,{/}),
  916.             {フォーラム},
  917.             {Forum(@nth(a,3,{/}),@nth(a,4,{/}),@nth(a,5,{/}))},
  918.             {ホームパーティ},
  919.             {GOHP(@nth(a,3,{/}),@nth(a,4,{/}))},
  920.             {課金情報確認},    {GOBILL},
  921.             {FM情報確認},    {GOFMNEWS},
  922.             {自由行動},    {GOCHAT},
  923.             {再ログイン},
  924.             {RECONECT(@nth(a,3,{/}),@nth(a,4,{/}))}
  925.             )
  926.         };
  927.     DATE:=@getdt;
  928.     n:=0;
  929.     loop    (
  930.         {
  931.         n:=n+1;
  932.         %a    @getline(NIFTY,n,1);
  933.         case    (a={},
  934.             {Yes},{im({No})},,
  935.             {
  936.             case    (@nth(a,2,{/}),
  937.                 {毎日},nifty1,
  938.                 {奇数},{case    (@getchar(DATE,10,1),
  939.                         {1},nifty1,
  940.                         {3},nifty1,
  941.                         {5},nifty1,
  942.                         {7},nifty1,
  943.                         {9},nifty1)},
  944.                 {偶数},{case    (@getchar(DATE,10,1),
  945.                         {0},nifty1,
  946.                         {2},nifty1,
  947.                         {4},nifty1,
  948.                         {6},nifty1,
  949.                         {8},nifty1)},
  950.                 ,{case    (@getchar(@nth(a,2,{/}),1,2),
  951.                     @getchar(DATE,13,2),nifty1,/* 曜日 */
  952.                     @getchar(DATE,9,2),nifty1)}/* 日付 */
  953.                 );
  954.              im({Yes});
  955.             }
  956.             );
  957.         }
  958.         );
  959.     };
  960.  
  961. /************************************************************************/
  962. /*    メイン処理                            */
  963. /************************************************************************/
  964. %FAPXMAIN
  965.     {
  966.     setcdir(CDIR);
  967.     #FAPXLGIN.PLP;    /* 自動ログイン処理 */
  968.  
  969.     case    (upldcntl<>{},
  970.         {Yes},
  971.         {setcdir(CDIR);#FAPXUPLD.PLP;}    /* 自動アップロード処理 */
  972.         );
  973.     case    (dnldcntl<>{},
  974.         {Yes},
  975.         {setcdir(CDIR);#FAPXDNLD.PLP;}    /* 自動ダウンロード処理 */
  976.         );
  977.  
  978.     setcdir(CDIR);
  979.     #FAPXMAIL.PLP;    /* メール受信処理 */
  980.  
  981.     DOWNSTART;
  982.  
  983.     DOnifty;
  984.  
  985.     DOWNSTOP;
  986.  
  987.     LogOff;
  988.     AUTOEND;
  989.     };
  990. /*********************  処理モジュール終了  *****************************/
  991.  
  992. /************************************************************************/
  993. /*                      以下メインモジュール                            */
  994. /************************************************************************/
  995.  
  996. /*    カレントディレクトリセット*/
  997. %CDIR    @getcdir;
  998.  
  999. /*    初期設定    */
  1000. footnote({FAPX}|VerLev|{初期処理中});
  1001. display({オートパイロットFAPX}|VerLev|{を開始します\n\n});
  1002.  
  1003. setoak({J});
  1004. case    (@nochar(CDIR)==3,
  1005.     {No}, {SETFILE:=CDIR|{\}|{FAPXSET.SET}},
  1006.     {Yes},{SETFILE:=CDIR|{FAPXSET.SET}}
  1007.     );
  1008. case    (@filechk(SETFILE),
  1009.     {Yes},{setcdir(CDIR);#FAPXSET.SET},
  1010.     {No}, {setcdir(CDIR);#FAPXSET.PLP}
  1011.     );
  1012. init;
  1013.  
  1014. case    (@nochar(CDIR)==3,
  1015.     {No}, {NIFFILE:=CDIR|{\}|{FAPXNIF.SET}},
  1016.     {Yes},{NIFFILE:=CDIR|{FAPXNIF.SET}}
  1017.     );
  1018. case    (@filechk(NIFFILE),
  1019.     {Yes},{setcdir(CDIR);#FAPXNIF.SET},
  1020.     {No}, {setcdir(CDIR);#FAPXNIF.PLP}
  1021.     );
  1022.  
  1023. /* テンポラリディレクトリとログディレクトリを作成する */
  1024. mkdir2(TEMP);
  1025. mkdir2(LOG);
  1026. setcdir2(CDIR);
  1027.  
  1028. /* オートパイロット停止時にPF10で再起動できるように */
  1029. setpf(10,{footnote({Loading ...});}|
  1030.      {setcdir(} | @xc({7b}) | CDIR | @xc({7d}) | {);}|
  1031.      {#FAPXMAIN.PLT});
  1032.  
  1033. loop    (
  1034.     {
  1035.     SNDMSG    ({erande_f.snd});
  1036.     footnote({処理を選択してください});
  1037.     select    ({処理を選択してください},
  1038.         Wtime4*20,{im({Yes})},
  1039.         {  自動アップロードの指定  },
  1040.         {setcdir(CDIR);#FAPXUSET.PLP;im({Yes})},
  1041.         {  自動ダウンロードの指定  },
  1042.         {setcdir(CDIR);#FAPXDSET.PLP;im({Yes})},
  1043.         {    自動通信をおこなう    },
  1044.         {FAPXMAIN;im({Yes})},
  1045.         {割引時間帯に通信をおこなう},
  1046.         {setcdir(CDIR);#FAPX3AM.PLP;FAPXMAIN;im({No})},
  1047.         {    各種設定をおこなう    },
  1048.         {setcdir(CDIR);#FAPXSET.PLP;init;im({Yes})},
  1049.         { NIFTYでの処理の設定 },
  1050.         {setcdir(CDIR);#FAPXNIF.PLP;im({Yes})},
  1051.         {      受信ログを読む      },
  1052.         {setcdir(CDIR);#FAPXVIEW.PLP;im({Yes})},
  1053.         {    FAPXを終了する    },
  1054.         {im({No})}
  1055.         );
  1056.     }
  1057.     );
  1058. display({オートパイロットFAPX}|VerLev|{を終了しました\n});
  1059. footnote({});
  1060. stop;
  1061.